<?php
/**
 * author:歪妻
 * Date: 2020/11/2 0002
 */

/**
 * 获取项目的根路径
 *
 * @return string
 */
function getRootPath()
{
    return realpath(__DIR__ . '/..');
}
/**
 * 获取数据库文件的完整路径
 *
 * @return string
 */
function getDatabasePath()
{
    return getRootPath() . '/../data/data.sqlite';
}
/**
 * 获取SQLite连接的DSN
 *
 * @return string
 */
function getDsn()
{
    return 'sqlite:' . getDatabasePath();
}
/**
 * 获取用于数据库访问的PDO对象
 *
 * @return \PDO
 */
function getPDO()
{
    return new PDO(getDsn());
}

/**
 * 转义HTML，因此可以安全输出
 *
 * @param string $html
 * @return string
 */
function htmlEscape($html)
{
    return htmlspecialchars($html, ENT_HTML5, 'UTF-8');
}

function convertSqlDate($sqlDate)
{
    //时间转换
    $date = DateTime::createFromFormat('Y-m-d H:i:s',$sqlDate);
    return $date->format('d,M,Y H:i');
}


function redirectAndExit($script)
{
    // 获取相对于域的URL（例如/blog/whatever.php或/whatever.php）并工作
    // 移出资料夹（例如/ blog /或/）。
    $relativeUrl = $_SERVER['PHP_SELF'];
    $urlFolder = substr($relativeUrl, 0, strrpos($relativeUrl, '/') + 1);
    //重定向到完整URL（
    $host = $_SERVER['HTTP_HOST'];
    $fullUrl = 'http://' . $host . $urlFolder . $script;
    header('Location: ' . $fullUrl);
    exit();
}

/**
 * 返回指定帖子的评论数
 *
 * @param integer $postId
 * @return integer
 */
function countCommentsForPost($postId)
{
    $pdo = getPDO();
    $sql = "
        SELECT
            COUNT(*) c
        FROM
            comment
        WHERE
            post_id = :post_id
    ";
    $stmt = $pdo->prepare($sql);
    $stmt->execute(
        array('post_id' => $postId, )
    );
    return (int) $stmt->fetchColumn();
}

/**
 * 返回指定帖子的所有评论 封装
 *
 * @param integer $postId
 */
function getCommentsForPost($postId)
{
    $pdo = getPDO();
    $sql = "
        SELECT
            id, name, text, created_at, website
        FROM
            comment
        WHERE
            post_id = :post_id
    ";
    $stmt = $pdo->prepare($sql);
    $stmt->execute(
        array('post_id' => $postId, )
    );
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}